package com.eastdigit.system.service;

import com.eastdigit.system.model.IDepartment;
import com.eastdigit.system.model.Menu;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.List;

/**
 * Created by Administrator on 2016/8/18.
 */
public interface IPermissionService {

    /**
     * 所有菜单和功能点
     * 
     * @return
     */
    List<Menu> queryAllMenuAndFunctions();

    /**
     * 用户权限
     * 
     * @param userId
     * @return
     */
    List<Menu> queryPermissionsOfUser(String userId);

    /**
     * 用户登录时返回的菜单需要验证的功能点
     * 
     * @param userId
     * @return
     */
    JSONObject getUrlPermissionsOfUserForLogin(String userId);

    /**
     * 获取用户没有的权限
     * 
     * @param userId
     * @return
     */
    JSONObject queryOutOfAuthedPermissionsOfUser(String userId);

    /**
     * 验证数据权限
     * 
     * @param userId
     * @param menuId
     * @param url
     * @param deptId
     * @return
     */
    boolean validateUrlPermissionsOfUser(String userId, String menuId, String url, String deptId);

    /**
     * 查询用户菜单，不包括功能点
     * 
     * @param userId
     * @return
     */
    JSONArray queryMenuForLeftBarOfUser(String userId);

    /**
     * 获取数据范围
     * 
     * @param userId
     * @param menuId
     * @param parentDeptId
     * @return
     */
    List<IDepartment> getAuthedDepartments(String userId, String menuId, String parentDeptId);
}
